This is the boss file. It controls everything about your site.
{
"name": "Coffee Bean", ← Your name (appears in browser tab)
"title": "Coffee Bean", ← Browser tab title (same as name usually)
"favicon": "assets/images/your-icon.png", ← Optional: custom browser tab icon
"description": "PhD candidate...", ← Optional: shows in Google search results
"highlight_color": "#ffff00", ← Color for ==highlighted text== (yellow by default)
"cv": {
"enabled": true, ← true = show CV button, false = hide it
"path": "assets/cv.pdf", ← Path to your CV file
"viewer": "pages/cv.html", ← Don't change this
"mode": "view", ← "view" or "download"
"label": "View CV" ← Text on the button
},
"header": {
"name": "Coffee Bean", ← Big text at top of page
"subtitle": "PhD Candidate", ← Small text below your name
"institution": "Caffeine Tech", ← Third line (shown with •)
"image": "assets/images/hero/profile1x1.jpg", ← Profile photo path
"image_alt": "Coffee Bean" ← Alt text for photo
},
"sections": [
{ "file": "data/about.json", "id": "about", "enabled": true },
{ "file": "data/publications.json", "id": "publications", "enabled": true },
{ "file": "data/research.json", "id": "research", "enabled": true },
{ "file": "data/education.json", "id": "education", "enabled": true },
{ "file": "data/contact.json", "id": "contact", "enabled": true }
]
}
| If you want to... | Do this... |
|---|---|
| Change your name/title | Edit name and header.name |
| Change your profile photo | Edit header.image path |
| Change favicon | Edit favicon path in site.json |
| Hide the CV button | Change cv.enabled to false |
| Reorder sections | Move the { } blocks up/down in sections[] |
| Remove a section | Delete its { } block OR set "enabled": false |
| Add a new section | Add a new { "file": "data/yourfile.json", "id": "yourid", "enabled": true } |
| Remove header text | Set to "" (empty quotes) |
| Remove profile photo | Delete "image" line or set to "" |
{
"type": "about", ← DON'T CHANGE
"id": "about", ← DON'T CHANGE
"data": {
"label": "ABOUT ME", ← Section title (shown at top)
"paragraphs": [ ← Your bio text
"First paragraph here... **bold text** works!",
"Second paragraph here..."
],
"buttons": [ ← Optional: links below your bio
{
"label": "View My Lab", ← Button text
"url": "https://example.com", ← Button link
"style": "primary", ← "primary" (black) or "outline" (border)
"align": "center" ← "left", "center", "right"
}
]
}
}
| Action | How |
|---|---|
| Write your bio | Edit text inside paragraphs[] |
| Add a paragraph | Add a new "text here" line inside the [ ] |
| Remove a paragraph | Delete its "text here" line |
| Add a button | Copy the { } block inside buttons[], edit label + url |
| Remove a button | Delete its { } block |
| Remove all buttons | Delete the whole "buttons": [ ... ] line |
| Remove all paragraphs | Delete "paragraphs": [ ... ] line (section shows label only) |
{
"type": "publications", ← DON'T CHANGE
"id": "publications", ← DON'T CHANGE
"data": {
"label": "PUBLICATIONS", ← Section title
"numbered": false, ← true = show 1. 2. 3. before each paper
"papers": [
{
"title": "Paper Title Here", ← Paper name (required)
"authors": "Author, A., Author, B.", ← Author list (optional)
"url": "https://doi.org/...", ← Link to paper (optional)
"meta": "Journal Name, 2024", ← Journal/year in italics (optional)
"text": "Brief abstract or note...", ← Extra text (optional)
"image": "path/to/image.jpg" ← Thumbnail image (optional)
}
]
}
}
| Action | How |
|---|---|
| Add a paper | Copy a full { } block and paste it inside papers: [ ], edit the details |
| Remove a paper | Delete its { } block (including the { } and everything inside) |
| Edit a paper | Change the text inside "" quotes |
| Make numbered list | Change "numbered": false to "numbered": true |
| Remove all papers | Delete "papers": [ ... ] line |
You have 3 ways to write this section. Pick ONE:
{
"type": "research", ← DON'T CHANGE
"id": "research", ← DON'T CHANGE
"data": {
"label": "RESEARCH",
"paragraphs": [
"I study **coffee brewing** and extraction kinetics.",
"My lab focuses on ==flavor chemistry== and rheology."
]
}
}
{
"type": "research", ← DON'T CHANGE
"id": "research", ← DON'T CHANGE
"data": {
"label": "RESEARCH",
"texts": [
"**Primary:** Coffee Brewing, Extraction Kinetics",
"**Secondary:** Chocolate Rheology, Pour-Over Dynamics"
]
}
}
{
"type": "research", ← DON'T CHANGE
"id": "research", ← DON'T CHANGE
"data": {
"label": "RESEARCH",
"items": [
{ "label": "Primary", "value": "Coffee Brewing, Extraction Kinetics" },
{ "label": "Secondary", "value": "Chocolate Rheology" }
]
}
}
| Action | How |
|---|---|
| Switch style | Delete the old field, add the new one (use only 1 at a time) |
| Add a line | Add a new "text..." or { } inside the array |
| Remove a line | Delete its line from the array |
| Remove all content | Delete the "paragraphs"/"texts"/"items" line |
{
"type": "education", ← DON'T CHANGE
"id": "education", ← DON'T CHANGE
"data": {
"label": "EDUCATION",
"items": [
{
"degree": "PhD Candidate in Coffee Science", ← Degree name (required)
"institution": "Caffeine Tech", ← University (optional)
"year": "2022 — Present", ← Date (optional)
"description": "Dissertation on..." ← Extra text (optional)
}
]
}
}
| Action | How |
|---|---|
| Add an entry | Copy a { } block, paste inside items: [ ], edit text |
| Remove an entry | Delete its { } block |
| Reorder | Move blocks up/down inside the [ ] |
| Remove all entries | Delete "items": [ ... ] line |
{
"type": "contact", ← DON'T CHANGE
"id": "contact", ← DON'T CHANGE
"data": {
"label": "CONNECT", ← Section title
"text": "Let's connect!", ← Optional intro text
"address": "Building 42, University Campus", ← Optional address
"extra_line": "Office hours: Mon-Wed 10-4", ← Optional extra info
"icons": [
{
"name": "googlescholar-old", ← Icon name (from 45 available)
"url": "https://scholar.google.com/", ← Full link
"label": "Google Scholar" ← Tooltip text
},
{
"name": "github",
"url": "https://github.com/",
"label": "GitHub"
},
{
"name": "mail",
"url": "mailto:hello@example.com",
"label": "Email"
}
]
}
}
Academic: googlescholar-old, googlescholar-new, orcid, researchgate, pubmed, scopus, publons, web-of-science, semanticscholar, hal, zenodo, osf, figshare, ieee, acm, arxiv, internetarchive
Social: github, gitlab, githubpages, linkedin, x, bluesky, mastodon, youtube, instagram, facebook, medium, substack, reddit, pinterest, whatsapp, dribbble, behance, artstation
General: mail, globe, university, graduation-cap, refinedgithub
| Action | How |
|---|---|
| Add an icon | Copy a { } block, paste inside icons: [ ], set name, url, label |
| Remove an icon | Delete its { } block |
| Edit icon URL | Change the url value |
| Change icon | Change the name value (see list above) |
| Remove all icons | Delete "icons": [ ... ] line |
Step 1: Open the JSON file for the section you want to edit (e.g. data/about.json for bio, data/education.json for degrees).
Step 2: Find the text you want to change inside "" quotes.
Step 3: Type your new text between the quotes.
Step 4: Save the file and refresh your browser.
{
"data": {
"paragraphs": [
"Old text" → "New text here"
]
}
}
This works for any text field — name, bio, paper titles, degree names, button labels, etc.
Step 1: Open the JSON file (e.g. data/publications.json to add a paper, data/education.json to add a degree).
Step 2: Find the array [ ] that contains the items.
Step 3: Copy an existing { } block, paste it after the last item, and add a comma after the previous item.
Step 4: Edit the values inside the new { } block.
Step 5: Save and refresh.
{
"items": [
{ "degree": "Existing Degree", "institution": "Univ", "year": "2024" },
{ "degree": "New Degree", "institution": "Univ", "year": "2025" }
]
}
Use this pattern to add papers, degrees, icons, buttons, or any list item.
Step 1: Open the JSON file.
Step 2: Find the item you want to remove inside the array [ ].
Step 3: Delete the entire { } block for that item, including the comma before or after it.
Step 4: Save and refresh.
{
"papers": [
{ "title": "Paper I want to keep", "authors": "Author", "url": "#", "meta": "Journal" },
{ "title": "Paper to remove", "authors": "Author", "url": "#", "meta": "Journal" } ← Delete this block
]
}
Use this pattern to remove papers, degrees, icons, paragraphs, or any list item.
Step 1: Open the JSON file.
Step 2: Find the array [ ] with the items.
Step 3: Cut an entire { } block and paste it higher or lower in the array.
Step 4: Save and refresh. Items will appear in the new order.
{
"items": [
{ "degree": "Second item", ... }, ← Cut and move this up
{ "degree": "First item", ... } ← Paste here
]
}
Step 1: Open the JSON file for any section (about.json, education.json, etc.).
Step 2: Add the media field inside "data": { }.
Step 3: Set the path or URL.
Step 4: Save and refresh.
{
"data": {
"label": "ABOUT ME",
"paragraphs": [...],
"image": "path/to/photo.jpg" ← Add this for a photo
"video": { "src": "https://youtu.be/...", "ratio": "16/9" } ← Add this for a video
}
}
Step 1: Open data/site.json.
Step 2: Find the section in the sections array.
Step 3: Change "enabled": true to "enabled": false to hide it, or false to true to show it again.
Step 4: Save and refresh.
{
"sections": [
{ "file": "data/about.json", "id": "about", "enabled": false } ← Section hidden
]
}
The JSON file is kept — only the rendering is skipped.
| I want to... | I edit... |
|---|---|
| Change my name | site.json → name + header.name |
| Change profile photo | site.json → header.image |
| Change my bio | about.json → paragraphs[] |
| Add a paper | publications.json → papers[] |
| Change research interests | research.json → texts[] or paragraphs[] or items[] |
| Add education entry | education.json → items[] |
| Add social icon | contact.json → icons[] |
| Add a photo | Any section → "image": "path/photo.jpg" |
| Add a video | Any section → "video": { "src": "..." } |
| Add a 3D model | Any section → "model": { "src": "..." } |
| Hide a section | site.json → set "enabled": false |
| Remove a section | Delete its { } from sections[] in site.json |
| Remove CV button | site.json → "cv": { "enabled": false } |
| Add a button | Any section → "buttons": [ { "label": "...", "url": "..." } ] |